Software may stop working correctly for several reasons including “malware” and “software rot.” Malware is a source of problems on computer systems and it comes in a variety of forms with unlimited vectors of attack. Regardless of the form and vector, the end result of malware is that the original software does not work correctly. “Rot” (also known as “software aging”) concerns the condition that after some period of time software stops working correctly. The reasons could be resource consumption, bugs, or transient hardware faults like stray energetic particles striking a chip. Whatever the reason for the rot, the end result is that the software stops working correctly.
Considering the wide ranging forms of malware and rot, the software community faces challenges in providing assurance to software users that a piece of software is indeed executing correctly. While it is possible to ensure the correct loading of the software (e.g., through features like Intel® Trusted Execution Technology), obtaining reliable information regarding the actual execution of that software, after it has been loaded, is challenging.